<?php
function dir_list($dir) {
    $files = array();
    if(@$handle = opendir($dir)) { //注意这里要加一个@，不然会有warning错误提示：）
        while(($file = readdir($handle)) !== false) {
            if($file != ".." && $file != ".") { //排除根目录；
                if(is_dir($dir."/".$file)) { //如果是子文件夹，就进行递归
                    $files[$file] = dir_list($dir."/".$file);
                } else { //不然就将文件的名字存入数组；
                    $files[] = $file;
                }
            }
        }
        closedir($handle);
        return $files;
    }
}

//遍历目录的目录，不递归
function dir_dir($dir){
    $dirs = array();
    if(@$handle = opendir($dir)) { //注意这里要加一个@，不然会有warning错误提示：）
        while (($file = readdir($handle)) !== false) {
            if ($file != ".." && $file != ".") { //排除根目录；
                if (is_dir($dir . "/" . $file)) { //如果是子文件夹，就进行递归
                    $dirs[] = $file;
                }
            }
        }
        closedir($handle);
        return $dirs;
    }
}

//根据内容查询某个语言词
function select_word($dir_list,$lang_dir,$context){
    $langs = array();
    foreach ($dir_list as $file){
        if(pathinfo($file,PATHINFO_EXTENSION) == 'ini'){
            $lang_word = parse_ini_file($lang_dir.'/'.$file);
            foreach ($lang_word as $key=>$val){
                if(strpos($val,$context)!==false){
                    $langs[] = array('key'=>$key,'val'=>$val);
                }
            }
        }
    }
    return $langs;
}

//根据key查询某个语言词
function select_word_key($dir_list,$lang_dir,$context_key_array){
    $langs = array();
    foreach ($dir_list as $file){
        if(pathinfo($file,PATHINFO_EXTENSION) == 'ini'){
            $lang_word = parse_ini_file($lang_dir.'/'.$file);
            if(empty($lang_word)){
                continue;
            }
            foreach ($lang_word as $key=>$val){
                if(in_array($key,$context_key_array)){
                    $langs[] = array('key'=>$key,'val'=>$val);
                }
            }
        }
    }
    return $langs;
}

//抛出异常
function throws_Exception($content){
    echo '<pre>';
    $e = new Exception($content); //当前key不存在
    echo $e->getTraceAsString();
    echo '</pre>';
    exit;
}

//获取语言随机key
function get_key($length = 8) {
    // 密码字符集，可任意添加你需要的字符
    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $password = '';
    for ( $i = 0; $i < $length; $i++ )
    {
    // 这里提供两种字符获取方式
    // 第一种是使用 substr 截取$chars中的任意一位字符；
    // 第二种是取字符数组 $chars 的任意元素
    // $password .= substr($chars, mt_rand(0, strlen($chars) – 1), 1);
        $password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
    }
    return $password;
}


/**
 * 写入config.ini文件
 * @param $white_file_path  写入的文件路径
 * @param $config_array 数组
 * @return int
 */
function write_config_ini_file($white_file_path,$config_array) {
    $white_text = ";;;;;;;;;;;;;;;;;;; 
; About cache.ini ; 
; save_media: 缓存目录,从项目根目录算起 ; 
; lang: 语言 ; 
; default_cache: 默认缓存 ; 
;;;;;;;;;;;;;;;;;;; \r\n";
    foreach ($config_array as $key=>$val){
        $white_text.=$key.'='.$val."\r\n";
    }
    return file_put_contents($white_file_path, $white_text, LOCK_EX);
}

